/**
 * @Copyright ®2015 Sinosoft Co. Ltd. All rights reserved.<br/>
 * 项目名称 : 中科软支付平台
 * 创建日期 : 2016年12月15日
 * 修改历史 : 
 *     1. [2016年12月15日]创建文件 by liuyujia
 */
package com.sinosoft.sinopay.web.weixinpay.dto;

import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;

import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.io.xml.XmlFriendlyNameCoder;
import com.thoughtworks.xstream.io.xml.XppDriver;

/**  
 * 【微信支付统一下单请求信息DTO】
 * @author liuyujia
 * @date 2016年12月15日 下午5:30:12 
 * @version V1.0  
 */
@XStreamAlias("xml")
public class WechatPrePaymentRequestDTO {
	/** 公众账号ID */
    private String appid;
    /** 商户号 */
    private String mch_id;
    /** 设备号 */
    private String device_info;
    /** 随机字符串 */
    private String nonce_str;
    /** 签名 */
    private String sign;
    /** 商品描述 */
    private String body;
    /** 商户订单号 */
    private String out_trade_no;
    /** 货币类型 */
    private String fee_type;
    /** 总金额 */
    private int total_fee;
    /** 终端IP */
    private String spbill_create_ip;
    /** 通知地址 */
    private String notify_url;
    /** 交易类型 */
    private String trade_type;
    /** 用户标识  */
    private String openid;
    /**传输的报文*/
    private String xml;
	public String getAppid() {
		return appid;
	}
	public void setAppid(String appid) {
		this.appid = appid;
	}
	public String getMch_id() {
		return mch_id;
	}
	public void setMch_id(String mch_id) {
		this.mch_id = mch_id;
	}
	public String getDevice_info() {
		return device_info;
	}
	public void setDevice_info(String device_info) {
		this.device_info = device_info;
	}
	public String getNonce_str() {
		return nonce_str;
	}
	public void setNonce_str(String nonce_str) {
		this.nonce_str = nonce_str;
	}
	public String getSign() {
		return sign;
	}
	public void setSign(String sign) {
		this.sign = sign;
	}
	public String getBody() {
		return body;
	}
	public void setBody(String body) {
		this.body = body;
	}
	public String getOut_trade_no() {
		return out_trade_no;
	}
	public void setOut_trade_no(String out_trade_no) {
		this.out_trade_no = out_trade_no;
	}
	public String getFee_type() {
		return fee_type;
	}
	public void setFee_type(String fee_type) {
		this.fee_type = fee_type;
	}
	public int getTotal_fee() {
		return total_fee;
	}
	public void setTotal_fee(int total_fee) {
		this.total_fee = total_fee;
	}
	public String getSpbill_create_ip() {
		return spbill_create_ip;
	}
	public void setSpbill_create_ip(String spbill_create_ip) {
		this.spbill_create_ip = spbill_create_ip;
	}
	public String getNotify_url() {
		return notify_url;
	}
	public void setNotify_url(String notify_url) {
		this.notify_url = notify_url;
	}
	public String getTrade_type() {
		return trade_type;
	}
	public void setTrade_type(String trade_type) {
		this.trade_type = trade_type;
	}
	public String getOpenid() {
		return openid;
	}
	public void setOpenid(String openid) {
		this.openid = openid;
	}
	 public String getXml() {
		return xml;
	}
	public void setXml(String xml) {
		this.xml = xml;
	}
	/**
     * 把对象转换成map对象
     * @Title: toMap 
     * @Description: 把对象转换成map对象
     * @return
     */
    public Map<String, Object> toMap() {
        Map<String, Object> map = new HashMap<String, Object>();
        Field[] fields = this.getClass().getDeclaredFields();
        for (Field field : fields) {
            Object obj;
            try {
                obj = field.get(this);
                if (obj != null) {
                    map.put(field.getName(), obj);
                }
            } catch (IllegalArgumentException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
        }
        return map;
    }
    
   /**
    * 
    * 对象生成报文
    */
    public void createXml() {
        XStream xStream = new XStream(new XppDriver(new XmlFriendlyNameCoder("_-", "_")));
        xStream.processAnnotations(this.getClass());
        String str = xStream.toXML(this);
        this.setXml(str);
    }
}
